package thread;

public class Demo11 {

    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            // 这个代码是在 lambda 中 (也就是在 t 线程的入口方法中) 调用的
            // 返回结果就是 t
             System.out.println("t: " + Thread.currentThread().getName());
            while (!Thread.currentThread().isInterrupted()) {
                System.out.println("hello thread");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // 这个线程掀桌了.
                    // throw new RuntimeException(e);
                    // 1. 加上 break 就是立即终止
                    // 2. 啥都不写 就是不终止
                    // 3. catch 中先执行一些其他逻辑再 break, 就是稍后终止.
                    break;
                }
            }
            System.out.println("t 结束");
        });
        t.start();

        Thread.sleep(3000);
        System.out.println("main 线程尝试终止 t 线程");
        t.interrupt();

        // 这个代码是在 main 方法中调用的, 此时返回结果就是 main
         System.out.println("main: " + Thread.currentThread().getName());
    }
}
